﻿#include "gravity_object.h"

CGravityObject::CGravityObject(LPD3DXSPRITE SpriteHandler, float XHandle, float YHandle, int ScreenWidth, int ScreenHeight):
	CObject(SpriteHandler,XHandle, YHandle, ScreenWidth, ScreenHeight)
{
	_g = - Config::GRAVITY;
	_vyo = 0;
	_on_air = false;
	_time_y = 0;
	_y_pre = 0;
}

void CGravityObject::_ObjectWithGravity()
{
	//Khi đối tượng có vận tốc y
	if(_on_air)
	{
		_time_y = GetTickCount() - _time_start_y + 1;
		_vy = _vyo + _g * _time_y;
	}

	//Khi đối tượng rơi tự do
	if(y_handle - _current_frame_height > _ground && !_on_air)
	{
		_time_start_y = GetTickCount();
		_g = - Config::GRAVITY;
		_on_air = true;
	}

	//Khi đối tượng chạm đất
	if(y_handle - _current_frame_height <= _ground && _g < 0)
	{
		_vy = 0;
		_on_air = false;
		y_handle = _ground + _current_frame_height;
	}
}

void CGravityObject::_FallDown()
{
	_time_start_y = GetTickCount();
	_y_pre = 0;
	_g =  - Config::GRAVITY;
	_vyo = _vy;
}